Unhandled exception (System.ArgumentException: Parameter "legacyExchangeDN" must be non-empty string

Event generated on server & post this event database crash and failover.

Log Name:      Application
Source:        MSExchangeIS
Date:          01.06.2015 12:56:27
Event ID:      1002
Task Category: General
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      <hostname>
Description:
Unhandled exception (System.ArgumentException: Parameter "legacyExchangeDN" must be non-empty string.
Parameter name: legacyExchangeDN
   at Microsoft.Exchange.Data.Directory.Recipient.ADRecipientObjectSession.FindByLegacyExchangeDN(String legacyExchangeDN)
   at Microsoft.Exchange.Server.Storage.DirectoryServices.ADObjectWrappers.ADRecipientSession.FindByLegacyExchangeDN(IExecutionContext context, String legacyExchangeDN)
   at Microsoft.Exchange.Server.Storage.DirectoryServices.Directory.LoadAddressInfoByLegacyDn(IExecutionContext context, TenantHint tenantHint, String legacyDN, Boolean loadPublicDelegates)
   at Microsoft.Exchange.Server.Storage.DirectoryServices.Directory.GetAddressInfoImpl(IExecutionContext context, TenantHint tenantHint, String legacyDN, Boolean loadPublicDelegates)
   at Microsoft.Exchange.Server.Storage.MapiDisp.RopHandler.TransportSend(MapiContext context, MapiMessage message, TransportSendResultFactory resultFactory)
   at Microsoft.Exchange.Server.Storage.MapiDisp.RopHandlerBase.TransportSend(IServerObject serverObject, TransportSendResultFactory resultFactory)
   at Microsoft.Exchange.RpcClientAccess.Parser.RopTransportSend.InternalExecute(IServerObject serverObject, IRopHandler ropHandler, ArraySegment`1 outputBuffer)
   at Microsoft.Exchange.RpcClientAccess.Parser.InputRop.Execute(IConnectionInformation connection, IRopDriver ropDriver, ServerObjectHandleTable handleTable, ArraySegment`1 outputBuffer)
   at Microsoft.Exchange.RpcClientAccess.Parser.RopDriver.ExecuteRops(List`1 inputArraySegmentList, ServerObjectHandleTable serverObjectHandleTable, ArraySegment`1 outputBuffer, Int32 outputIndex, Int32 maxOutputSize, Boolean isOutputBufferMaxSize, Int32& outputSize, AuxiliaryData auxiliaryData, Boolean isFake, Byte[]& fakeOut)
   at Microsoft.Exchange.RpcClientAccess.Parser.RopDriver.Execute(IList`1 inputBufferArray, ArraySegment`1 outputBuffer, Int32& outputSize, AuxiliaryData auxiliaryData, Boolean isFake, Byte[]& fakeOut)
   at Microsoft.Exchange.Server.Storage.MapiDisp.MapiRpc.<>c__DisplayClass9.<DoRpc>b__6(MapiContext operationContext, MapiSession& session, Boolean& deregisterSession, AuxiliaryData auxiliaryData)
   at Microsoft.Exchange.Server.Storage.MapiDisp.MapiRpc.Execute(IExecutionDiagnostics executionDiagnostics, MapiContext outerContext, String functionName, Boolean isRpc, IntPtr& contextHandle, Boolean tryLockSession, String userDn, IList`1 dataIn, Int32 sizeInMegabytes, ArraySegment`1 auxIn, ArraySegment`1 auxOut, Int32& sizeAuxOut, ExecuteDelegate executeDelegate)
   at Microsoft.Exchange.Server.Storage.MapiDisp.MapiRpc.DoRpc(IExecutionDiagnostics executionDiagnostics, IntPtr& contextHandle, IList`1 ropInArraySegments, ArraySegment`1 ropOut, Int32& sizeRopOut, Boolean internalAccessPrivileges, ArraySegment`1 auxIn, ArraySegment`1 auxOut, Int32& sizeAuxOut, Boolean fakeRequest, Byte[]& fakeOut)
   at Microsoft.Exchange.Server.Storage.MapiDisp.PoolRpcServer.EcDoRpc(MapiExecutionDiagnostics executionDiagnostics, IntPtr& sessionHandle, UInt32 flags, UInt32 maximumResponseSize, ArraySegment`1 request, ArraySegment`1 auxiliaryIn, IPoolSessionDoRpcCompletion completion)
   at Microsoft.Exchange.Server.Storage.MapiDisp.PoolRpcServer.EcPoolSessionDoRpc_Unwrapped(MapiExecutionDiagnostics executionDiagnostics, IntPtr contextHandle, UInt32 sessionHandle, UInt32 flags, UInt32 maximumResponseSize, ArraySegment`1 request, ArraySegment`1 auxiliaryIn, IPoolSessionDoRpcCompletion completion)
   at Microsoft.Exchange.Server.Storage.MapiDisp.PoolRpcServer.<>c__DisplayClassf.<EcPoolSessionDoRpc>b__c()
   at Microsoft.Exchange.Common.IL.ILUtil.DoTryFilterCatch[T](TryDelegate tryDelegate, GenericFilterDelegate filterDelegate, GenericCatchDelegate catchDelegate, T state)).

June 1st, 2015 7:55am

Hi,

Beginning with Exchange 2000, the Exchange configuration is stored in the Active Directory database and there is no obj-Dist-Name. Exchange 200x uses the LegacyExchangeDN for every "Exchange activated" (mail-enabled users, public folders, and Exchange system configuration objects) object. The Exchange Recipient Update Service (RUS) is responsible for filling the LegacyExchangeDN attribute. Normal Active Directory objects which aren't e-mail activated have a LegayExchangeDN but have no value.

Basis on the Event ID 1002 with Source MSExchangeIS, it indicate that some objects LegacyExchangeDN is no set.
Please run below command to double check: Get-Mailbox | Where {$_.LegacyExchangeDN eq } | FL Identity,*Legacy*

Meanwhile, please try to restart Exchange Information store service or Exchange server for test.

Thanks

Free Windows Admin Tool Kit Click here and download it now
June 2nd, 2015 3:30am

Thanks Allen for information,

Adding to above query post event 1002 we received with below error event & we found that mentioned mailbox guid user is not exist in exchange but after that database failover.

 
Log Name:      Application

Source:        MSExchangeIS

Date:          01.06.2015 12:56:27

Event ID:      1013

Task Category: General

Level:         Error

Keywords:      Classic

User:          N/A

Computer:      <hostname>
Description:

The mailbox with mailboxguid "userguid" caused crash or resource outage on database (GUID="Databaseguid"). Description: ArgumentException: MEDDR.ADRecipientObjectSession.FindByLegacyExchangeDN,MESSDSADOW.ADRecipientSession.FindByLegacyExchangeDN,MESSDS.Directory.LoadAddressInfoByLegacyDn,MESSDS.Directory.GetAddressInfoImpl,MESSMD.RopHandler.TransportSend,MESSMD.RopHandlerBase.TransportSend,ME.

June 2nd, 2015 9:29am

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics